﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Text;

namespace projetoFinal
{
    public class operaAssociado
    {
        public static List<associado> listar(string field, string value, int crit)
        {
            List<associado> listAssociado = new List<associado>();
            string strSQL = string.Empty;

            if (field.Equals(""))
            {
                strSQL = "select * from associado";
            }
            else
            {
                strSQL = DAOHelper.sqlQueryBuilder("associado", field, value, crit);
            }
            using (IDataReader dr = DAOHelper.executeQuery(strSQL))
            {
                while (dr.Read())
                {
                    seguradora objSeguradora = operaSeguradora.buscar(Int64.Parse(dr["codSeguradora"].ToString()));

                    associado objAssociado = new associado(Int64.Parse(dr["codAssociado"].ToString()), objSeguradora, dr["nome"].ToString(), dr["matricula"].ToString(),
                                                           (status)int.Parse(dr["status"].ToString()), (situacaoFinanceira)int.Parse(dr["sitFinanceiro"].ToString()));
                    objAssociado.Cpf = dr["cpf"].ToString();
                    objAssociado.Cep = dr["cep"].ToString();
                    objAssociado.Endereco = dr["endereco"].ToString();
                    objAssociado.Complemento = dr["complemento"].ToString();
                    objAssociado.Numero = dr["numero"].ToString();
                    objAssociado.Bairro = dr["bairro"].ToString();
                    objAssociado.Cidade = dr["cidade"].ToString();
                    objAssociado.Uf = dr["uf"].ToString();
                    objAssociado.Fone = dr["fone"].ToString();

                    listAssociado.Add(objAssociado);
                }
            }
            return listAssociado;
        }
        public static int incluir(associado objAssociado)
        {
            StringBuilder strSQL = new StringBuilder();
            strSQL.Append(" INSERT INTO ");
            strSQL.Append(" associado ");
            strSQL.Append(" ( ");
            strSQL.Append("     codSeguradora, matricula, cpf, nome, cep, endereco, complemento, numero, bairro, cidade, uf, fone, status, sitFinanceiro ");
            strSQL.Append(" ) ");
            strSQL.Append(" VALUES ");
            strSQL.Append(" ( ");
            strSQL.AppendFormat(" {0} ", "'" + objAssociado.Seguradora.CodCadastro + "'");
            strSQL.AppendFormat(" , {0} ", "'" + objAssociado.Matricula + "'");
            strSQL.AppendFormat(" , {0} ", "'" + objAssociado.Cpf + "'");
            strSQL.AppendFormat(" , {0} ", "'" + objAssociado.Nome + "'");
            strSQL.AppendFormat(" , {0} ", "'" + objAssociado.Cep + "'");
            strSQL.AppendFormat(" , {0} ", "'" + objAssociado.Endereco + "'");
            strSQL.AppendFormat(" , {0} ", "'" + objAssociado.Complemento + "'");
            strSQL.AppendFormat(" , {0} ", "'" + objAssociado.Numero + "'");
            strSQL.AppendFormat(" , {0} ", "'" + objAssociado.Bairro + "'");
            strSQL.AppendFormat(" , {0} ", "'" + objAssociado.Cidade + "'");
            strSQL.AppendFormat(" , {0} ", "'" + objAssociado.Uf + "'");
            strSQL.AppendFormat(" , {0} ", "'" + objAssociado.Fone + "'");
            strSQL.AppendFormat(" , {0} ", "'" + (Int32)objAssociado.Status + "'");
            strSQL.AppendFormat(" , {0} ", "'" + (Int32)objAssociado.SitFinanceiro + "'");
            strSQL.Append("  ); ");
            return DAOHelper.executeDML(strSQL.ToString());
        }
        public static int apagar(Int64 codAssociado)
        {
            StringBuilder strSQL = new StringBuilder();
            strSQL.Append(" DELETE FROM associado ");
            strSQL.Append(" WHERE ");
            strSQL.Append(" codAssociado = ");
            strSQL.AppendFormat("{0}; ", codAssociado);
            return DAOHelper.executeDML(strSQL.ToString());
        }
        public static int editar(associado objAssociado)
        {
            StringBuilder strSQL = new StringBuilder();
            strSQL.Append(" UPDATE associado ");
            strSQL.Append(" SET ");
            strSQL.AppendFormat(" codSeguradora = {0} ", "'" + objAssociado.Seguradora.CodCadastro + "'");
            strSQL.AppendFormat(" , matricula = {0} ", "'" + objAssociado.Matricula + "'");
            strSQL.AppendFormat(" , cpf = {0} ", "'" + objAssociado.Cpf + "'");
            strSQL.AppendFormat(" , nome = {0} ", "'" + objAssociado.Nome + "'");
            strSQL.AppendFormat(" , cep = {0} ", "'" + objAssociado.Cep + "'");
            strSQL.AppendFormat(" , endereco = {0} ", "'" + objAssociado.Endereco + "'");
            strSQL.AppendFormat(" , complemento = {0} ", "'" + objAssociado.Complemento + "'");
            strSQL.AppendFormat(" , numero = {0} ", "'" + objAssociado.Numero + "'");
            strSQL.AppendFormat(" , bairro = {0} ", "'" + objAssociado.Bairro + "'");
            strSQL.AppendFormat(" , cidade = {0} ", "'" + objAssociado.Cidade + "'");
            strSQL.AppendFormat(" , uf = {0} ", "'" + objAssociado.Uf + "'");
            strSQL.AppendFormat(" , fone = {0} ", "'" + objAssociado.Fone + "'");
            strSQL.AppendFormat(" , status = {0} ", "'" + (Int32)objAssociado.Status + "'");
            strSQL.AppendFormat(" , sitFinanceiro = {0} ", "'" + (Int32)objAssociado.SitFinanceiro + "'");
            strSQL.Append(" WHERE ");
            strSQL.AppendFormat(" codAssociado = {0}; ", objAssociado.CodAssociado);
            return DAOHelper.executeDML(strSQL.ToString());
        }
        public static associado buscar(Int64 codAssociado)
        {
            associado objAssociado;
            List<associado> listaAssociado = listar(" codAssociado ", codAssociado.ToString(), 1);
            if (listaAssociado.Count == 1)
            {
                objAssociado = listaAssociado[0];
            }
            else
            {
                objAssociado = null;
            }
            return objAssociado;
        }
    }
}